/*
 *      Activity.java
 *      
 *      Copyright 2011 florent <florent@P5E3deluxe>
 *      
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *      
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *      
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 *      MA 02110-1301, USA.
 *      
 *      
 */
/**
 * classe d'activité
 * sert au stockage des données des événements
 */
package pda.agenda.datas;

import java.util.GregorianCalendar;
import java.io.Serializable;

public class Activity implements Serializable, Comparable {

	private static final long serialVersionUID = 1L;

	/**
	 * titre de l'activité
	 */
	private String intitule;
	/**
	 * description de l'activité
	 */
	private String description;
	/**
	 * date de début de l'activité
	 */
	private GregorianCalendar dateDebut;
	/**
	 * date de fin de l'activité
	 */
	private GregorianCalendar dateFin;
	/**
	 * lieu de l'activité
	 */
	private String lieu;

	/**
	 * Constructeur
	 * @param intitule titre de l'activité
	 * @param description petit texte décrivant l'activité
	 * @param dateDebut date de commencement de l'activité
	 * @param dateFin date de fin de l'activité
	 * @param lieu endroit ou se déroule l'activité
	 */
	public Activity(String intitule,String description,GregorianCalendar dateDebut,GregorianCalendar dateFin,String lieu)throws DateNonValideException {
		this.intitule=intitule;
		this.description=description;
		this.lieu=lieu;
		if(dateDebut.compareTo(dateFin) < 0)
		{
			this.dateDebut=dateDebut;
			this.dateFin=dateFin;
		}
		else{
			throw new DateNonValideException();
		}
	}
	
	
	/**
	 * @return une version lisible des attributs de la classe
	 */
	public String toString() {
		return "nom : "+intitule+" description : "+description+" date de début : "+dateDebut.toString()+" date de fin : "+dateFin.toString()+" lieu : "+lieu;
	}
	
	/**
	 * methode por comparer les date de début d'une activité
	 * @param o l'autre objet activity
	 * @return un entier négatif, zéro, or un entier positif si l'activité se déroule avant ou après une autre
	 */
	public int compareTo(Activity o){
		return dateDebut.compareTo(o.getDateDebut());
	}
	
	// <accesseurs>
	/**
	 * @return intitule de l'activité
	 */
	public String getIntitule() {
		return intitule;
	}
	/**
	 * @return description de l'activité
	 */
	public String getDescription() {
		return description;
	}
	/**
	 * @return date de début le l'activité
	 */
	public GregorianCalendar getDateDebut() {
		return dateDebut;
	}
	/**
	 * @return date de fin de l'activité
	 */
	public GregorianCalendar getDateFin() {
		return dateFin;
	}
	/**
	 * @return lieu de l'activité
	 */
	public String getLieu() {
		return lieu;
	}
	// </accesseurs>
}

























